﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OmronLib.Base
{
    internal class FINSResponseErrors
    {
        public static Dictionary<string, string> Errors { get; set; } = new Dictionary<string, string>()
        {
            {"0000", "正常完成"},
            {"0001", "服务已取消"},

            {"0101", "本地节点不在网络中"},
            {"0102", "Token 超时"},
            {"0103", "重试失败"},
            {"0104", "发送帧过多"},
            {"0105", "节点地址范围错误"},
            {"0106", "节点地址重复"},

            {"0201", "目标节点不在网络中"},
            {"0202", "没有具有指定单元地址的单元"},
            {"0203", "第三个节点不存在"},
            {"0204", "目标节点繁忙"},
            {"0205", "响应超时"},

            {"0301", "通信控制器出错"},
            {"0302", "目标 CPU 单元中发生 CPU 错误"},
            {"0303", "由于 Board 中发生错误，因此未返回响应"},
            {"0304", "单元号设置错误"},

            {"0401", "单元/主板不支持指定的命令代码"},
            {"0402", "由于模型或版本不正确，无法执行该命令"},

            {"0501", "未在路由表中设置目标网络或节点地址"},
            {"0502", "由于没有路由表，因此无法进行中继"},
            {"0503", "路由表中有错误"},
            {"0504", "尝试发送到超过 3 个网络的网络"},

            {"1001", "该命令的长度超过了允许的最大长度"},
            {"1002", "命令短于允许的最小长度"},
            {"1003", "指定的元素数与写入数据项数不同"},
            {"1004", "命令格式错误，使用了不正确的格式"},
            {"1005", "标头错误，本地节点中的中继表或中继节点中的本地网络工作表不正确"},

            {"1101", "缺少区域分类，指定的字在内存区域中不存在或没有 EM 区域"},
            {"1102", "访问大小错误，访问大小规范不正确或指定了奇数字地址"},
            {"1103", "地址范围错误，命令进程中的起始地址超出可访问区域"},
            {"1104", "超出地址范围，命令进程中的结束地址超出可访问区域"},
            {"1106", "程序缺失，未指定 FFFF 十六进制"},
            {"1109", "关系错误，命令 data 中元素的 large-small 关系不正确"},
            {"110A", "重复数据访问，在数据跟踪期间指定差异监控，或在差分监控期间指定数据跟踪"},
            {"110B", "响应时间过长，响应格式长于允许的最大长度"},
            {"110C", "参数错误，其中一个参数设置出错"},

            {"2002", "程序区域受到保护"},
            {"2003", "尚未注册表"},
            {"2004", "搜索数据不存在"},
            {"2005", "已指定不存在的程序编号"},
            {"2006", "该文件在指定的文件设备上不存在"},
            {"2007", "被比较的数据是不一样的"},

            {"2101", "指定的区域是只读的"},
            {"2102", "程序区域受到保护，或者由于已指定自动生成数据链接表，因此无法写入"},
            {"2103", "无法创建文件，因为已超出限制，或者已为系统限制打开的最大文件数"},
            {"2105", "已指定不存在的程序编号"},
            {"2106", "该文件在指定的文件设备上不存在"},
            {"2107", "指定的文件设备中已存在同名的文件"},
            {"2108", "无法进行更改，因为这样做会产生问题"},

            {"2201", "模式不正确，或者数据链路正在运行"},
            {"2202", "模式不正确，或者数据链接处于活动状态"},
            {"2203", "PLC 处于 PROGRAM 模式"},
            {"2204", "PLC 处于 DEBUG 模式"},
            {"2205", "PLC 处于 MONITOR 模式"},
            {"2206", "PLC 处于 RUN 模式"},
            {"2207", "指定的节点不是轮询节点"},
            {"2208", "模式不正确"},

            {"2301", "文件设备缺失，指定的内存不作为文件设备存在。"},
            {"2302", "内存缺失，没有文件内存"},
            {"2303", "缺少时钟，没有时钟"},

            {"2401", "表格缺失，数据链接表尚未注册或包含错误"},

            {"2502", "内存错误，内存内容包含错误"},
            {"2503", "I/O 设置错误，已注册的 I/O 表与实际的 I/O 配置不一致"},
            {"2504", "I/O 点过多，注册的 I/O 点和远程 I/O 点过多"},
            {"2505", "CPU 总线错误，CPU 和 CPU 总线单元之间的数据传输发生错误"},
            {"2506", "I/O 设置复制，多次设置相同的号码/地址"},
            {"2507", "I/O 总线错误，CPU 和 I/O 单元之间的数据传输发生错误"},
            {"2509", "SYSMAC BUS/2 错误，SYSMAC BUS/2 线路上的数据传输出错"},
            {"250A", "CPU 总线错误，CPU 总线单元的数据传输出错"},
            {"250D", "SYSMAC 总线号码重复，同一号码被分配多次"},
            {"250F", "内存错误，内存、内存卡或 EM 文件内存中发生内存错误"},
            {"2510", "SYSMAC 总线终结点缺失，尚未设置终结点"},

            {"2601", "无保护，指定的区域不受保护"},
            {"2602", "密码不正确，指定的密码不正确"},
            {"2604", "保护，指定区域受到保护，或者接收命令的节点已经在处理 5 个命令"},
            {"2605", "服务已执行，服务正在执行中"},
            {"2606", "服务已停止，服务未执行"},
            {"2607", "无执行权，尚未获得执行服务的权限，或者由于发生了缓冲区错误，因此未返回响应"},
            {"2608", "设置未完成，尚未进行执行服务前所需的设置"},
            {"2609", "未设置必要的项目，尚未在命令 data 中设置所需的元素"},
            {"260A", "Number 已定义，指定的操作/转换编号已在以前的程序中注册"},
            {"260B", "错误不会清除，错误的原因尚未消除"},

            {"3001", "无访问权限，访问权限由 anotherdevice 持有。（正在从另一个节点执行联机编辑，或者 ACCESS RIGHT ACQUIRE 或 ACCESS RIGHT FORCE ACQUIRE 已由另一个节点执行。）"},
            {"4001", "服务已中止，使用 ABORT 命令中止了服务"}
        };

    }
}
